#include<stdio.h>
#include"ohos_init.h"
#include"cmsis_os2.h"
#include"iot_gpio.h"
#include"hi_io.h"
#define LED_GPIO 9
#define BUTTON_GPIO 5
static volatile IotGpioValue led_gpioValue;

void Down_Test(void *arg)
{
    (void)arg;
    led_gpioValue=!led_gpioValue;
}
void Thread_Gpio(void *arg)
{
    (void*)arg;
    IoTGpioInit(LED_GPIO);
    IoTGpioInit(BUTTON_GPIO);
    hi_io_set_func(LED_GPIO,HI_IO_FUNC_GPIO_9_GPIO);
    hi_io_set_func(BUTTON_GPIO,HI_IO_FUNC_GPIO_5_GPIO);
    IotGpioSetDir(LED_GPIO,IOT_GPIO_DIR_OUT);//设置引脚9为输出电平
    IotGpioSetDir(BUTTON_GPIO,IOT_GPIO_DIR_IN);
    hi_io_set_pull(BUTTON_GPIO,HI_IO_PULL_UP);
    
    //设置中断
    IoTGpioRegisterIsrFunc(//给引脚5设置中断 当引脚从高电平切到低的时候 下沿 触发
        BUTTON_GPIO,IOT_INT_TYPE_EDGE,IOT_GPIO_EDGE_FALL_LEVEL_LOW,Down_Test,NULL);
    while(1)
    {
        IoTGpioSetOutputVal(LED_GPIO,led_gpioValue);
        osDelay(10);//100ms切换一次电平状态
    }
}
static void entry(void)
{
    osThreadAttr_t attr;
    attr.name="Main_Thread";
    attr.stack_size=4096;
    attr.priority=osPriorityAboveNormal;
    if(osThreadNew(Thread_Gpio,NULL,&attr)==NULL)
    {
        printf("Create thread_main is fail\n");
    }
}
SYS_RUN(entry);
